Distributed network based systems are now commonly for the provision and creation of useful applications. Components (agent, objects . . . ) are distributed on a network and cooperate together to provide desired services. Several techniques have been proposed to provide for the interaction of these components. These techniques are characterized by unique advantages and disadvantages. This disclosure describes a new system which improves on such prior art techniques. The existing techniques are:    1. Remote method invocation or remote procedure call    2. Remote message passing    3. Remote execution
In remote procedure calls or remote method invocation, the components are aware of the detailed operation of each other and can invoke specific behavior in each other. This has the severe disadvantage of requiring that any change in any component be checked for its implications on the expectation of any component that uses its services.
Remote message passing tries to avoid this problem by removing the need for close coupling between the components. With remote method invocations, a change in the detailed operation of one object would require the examination of the operation of all objects which invoke methods on it to ensure that the expectations of these objects have not been violated. This problem may be overcome by confining all interactions to the grammar and semantics of a defined set of messages. Agents or objects can be changed or new objects or agents added as long as they follow the grammar and semantics of the messages. This allows for more openness and evolvability in systems operation.
However the message passing system suffers from the disadvantage of consuming excessive bandwidth in the passing of messages between agents or objects. This can be especially true in the case of wireless applications in which the radio bandwidth is limited and the data rate is low, resulting in high cost to transfer messages and high delay for the applications depending upon them. This has led to the development of the remote execution model of mobile code or mobile agents in which a program, instead of a set of messages, is passed. The program runs at the remote location to fulfill the invoking component's request. This has the advantage in some cases of conserving scarce bandwidth and improving the latency of the applications.
However the remote execution model suffers from serious problems relating to security. Extensive measures must be taken to protect such a system against malicious users who may send damaging objects or agents to it. The measures taken to deal with security concerns in such systems weigh heavily against any benefit from conserved bandwidth. Remote message passing systems are not as severely affected by these security concerns since they do not run independently on the system but are interpreted, which removes the most severe security concerns that affect mobile code.
Voice communications is one area of considerable research and development in the application of distributed systems.
Many call control features provided by communication systems require location information. For example, the initiation of a phone call, the transfer of a call, and the inclusion of a person into a conference call all require user location information. In some cases, it is possible that useful location information is stored in different directory services. According to the prior art, it is impossible for a user to elect to use different directory services during a call session unless the directory services all conform to a standard API and the application allows a selection of different directory applications. Also, since the directory applications have access to all of the user's private directory information through a set of APIs the user is relegated to trusting that the application is only accessing location data and not accessing some other private data.
Thus, it is desirable that directory services be provided whereby location information may be obtained from any directory application within the system with only minimal changes to the directory application while respecting each user's data privacy. It is also desirable to provide a user with the option of invoking a request to communicate from a directory application rather than initiating the request from the call control application. This can be problematic when a user wishes to leverage a corporate directory service using a wireless device and the simplest interface to that information is via a WEB browser. In this circumstance it is impossible to rely on a single application that leverages a set of APIs to such a corporate directory. Thus, there is a need in the industry to provide a system that is capable of leveraging assertion-based call control in order to minimize the coupling between the communication assertion components and the directory application.
This need is made more pronounced by the increasing prevalence of wireless communication devices. In an open environment, services are created for users by the combining of information from multiple sources. In the example above, a user's call request is combined with location information from an external directory to create a message to command an external switch (i.e. PBX). This standard technique is difficult to implement in a wireless environment because of the low bandwidth, error-prone connection provided by wireless devices and the difficulty in providing large amounts of computing power on such devices due to power and size constraints.